package com.nuaa.rag;

import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.document.Document;
import org.springframework.ai.reader.markdown.MarkdownDocumentReader;
import org.springframework.ai.reader.markdown.config.MarkdownDocumentReaderConfig;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@Component
@Slf4j
public class LoveAppDocumentLoader {

	private final ResourcePatternResolver resourcePatternResolver;

	LoveAppDocumentLoader(ResourcePatternResolver resourcePatternResolver) {
		this.resourcePatternResolver = resourcePatternResolver;
	}

	public List<Document> loadMarkdowns() {
		List<Document> allDocuments = new ArrayList<>();
		try {
			// 这里可以修改为你要加载的多个 Markdown 文件的路径模式
			Resource[] resources = resourcePatternResolver.getResources("classpath:document/*.md");
			for (Resource resource : resources) {
				String fileName = resource.getFilename();
				MarkdownDocumentReaderConfig config = MarkdownDocumentReaderConfig
						.builder()
						.withHorizontalRuleCreateDocument(true)
						.withIncludeCodeBlock(false)
						.withIncludeBlockquote(false)
						.withAdditionalMetadata("filename", Optional.ofNullable(fileName)
						                                            .orElse("unknown"))
						.build();
				MarkdownDocumentReader reader = new MarkdownDocumentReader(resource, config);
				allDocuments.addAll(reader.get());
			}
		} catch (IOException e) {
			log.error("Markdown 文档加载失败", e);
		}
		return allDocuments;
	}
}
